package done.easy_601_700;

import com.study.common.TreeNode;
import org.junit.Test;

import static com.study.util.LogUtil.info;

/**
 * 669. Trim a Binary Search Tree 修剪二叉搜索树
 * <p>
 * 给定一个二叉搜索树，同时给定最小边界L 和最大边界 R。
 * 通过修剪二叉搜索树，使得所有节点的值在[L, R]中 (R>=L) 。
 * 你可能需要改变树的根节点，所以结果应当返回修剪好的二叉搜
 * 索树的新的根节点。
 * <p>
 * 示例 1:
 * <p>
 * 输入:
 * 1
 * / \
 * 0   2
 * <p>
 * L = 1
 * R = 2
 * <p>
 * 输出:
 * 1
 * \
 * 2
 *
 * @author 大硕
 * 2019-04-07 1:17 PM
 **/
public class TrimABinarySearchTree {

    @SuppressWarnings("all")
    public TreeNode trimBST(TreeNode root, int L, int R) {
        // 190407 first
        return null;
    }

    @Test
    public void test() {
        info(trimBST(new TreeNode(1,
                0, 2), 1, 2));
    }
}




























/*
public TreeNode trimBST(TreeNode root, int L, int R) {
    if (root == null)
        return null;

    //当前节点值小于下限, 则右子树可能符合要求
    if (root.val < L) {
        return trimBST(root.right, L, R);

    //当前节点值大于上限, 则左子树可能符合要求
    } else if (root.val > R) {
        return trimBST(root.left, L, R);
    } else {
        root.left = trimBST(root.left, L, R);
        root.right = trimBST(root.right, L, R);
        return root;
    }
}
*/
